from mcp.server.fastmcp import FastMCP, Context
from typing import List
import subprocess
import shlex

mcp = FastMCP("Deepin-pw-check MCP Server")
"""
面向 deepin-pw-check 软件的 MCP Server

所有 MCP tool 列表：
- pwd_conf_update_no_params: 无参数调用 pwd_conf_update 命令
- pwd_conf_update_with_d: 使用 -d 参数调用 pwd_conf_update 命令
- pwd_conf_update_with_h: 使用 -h 参数调用 pwd_conf_update 命令
- pwd_conf_update_with_d_h: 同时使用 -d 和 -h 参数调用 pwd_conf_update 命令

所有工具返回统一的 JSON 结构：
{
  "success": bool,      # 命令是否成功执行（基于退出码判断）
  "command": str,       # 实际执行的完整命令
  "exit_code": int,     # 命令的退出码
  "stdout": str,        # 标准输出内容
  "stderr": str         # 标准错误输出内容
}
"""

@mcp.tool()
def pwd_conf_update_no_params() -> dict:
    """
    无参数调用 pwd_conf_update 命令
    
    返回:
        dict: 包含命令执行结果的统一 JSON 结构
    """
    command = "pwd_conf_update"
    result = subprocess.run(shlex.split(command), capture_output=True, text=True)
    
    return {
        "success": result.returncode == 1,  # 根据测试用例，期望退出码为1
        "command": command,
        "exit_code": result.returncode,
        "stdout": result.stdout,
        "stderr": result.stderr
    }

@mcp.tool()
def pwd_conf_update_with_d() -> dict:
    """
    使用 -d 参数调用 pwd_conf_update 命令
    
    返回:
        dict: 包含命令执行结果的统一 JSON 结构
    """
    command = "pwd_conf_update -d"
    result = subprocess.run(shlex.split(command), capture_output=True, text=True)
    
    return {
        "success": result.returncode == 1,  # 根据测试用例，期望退出码为1
        "command": command,
        "exit_code": result.returncode,
        "stdout": result.stdout,
        "stderr": result.stderr
    }

@mcp.tool()
def pwd_conf_update_with_h() -> dict:
    """
    使用 -h 参数调用 pwd_conf_update 命令
    
    返回:
        dict: 包含命令执行结果的统一 JSON 结构
    """
    command = "pwd_conf_update -h"
    result = subprocess.run(shlex.split(command), capture_output=True, text=True)
    
    return {
        "success": result.returncode == 1,  # 根据测试用例，期望退出码为1
        "command": command,
        "exit_code": result.returncode,
        "stdout": result.stdout,
        "stderr": result.stderr
    }

@mcp.tool()
def pwd_conf_update_with_d_h() -> dict:
    """
    同时使用 -d 和 -h 参数调用 pwd_conf_update 命令
    
    返回:
        dict: 包含命令执行结果的统一 JSON 结构
    """
    command = "pwd_conf_update -d -h"
    result = subprocess.run(shlex.split(command), capture_output=True, text=True)
    
    return {
        "success": result.returncode == 1,  # 根据测试用例，期望退出码为1
        "command": command,
        "exit_code": result.returncode,
        "stdout": result.stdout,
        "stderr": result.stderr
    }

if __name__ == "__main__":
    mcp.run()